; phi with two branches.
define i8 @test_phi1(i1 %sel, i8 %x, i8 %y) 
{
        br i1 %sel, label %T1, label %F1

        T1:
        br label %E1

        F1:
        br label %E1

        E1:
        %a1 = phi i8 [%x, %T1], [%y, %F1]
        ret i8 %a1
}

; phi with two branches and actions.
define i8 @test_phi2(i1 %sel, i8 %x, i8 %y) 
{
        br i1 %sel, label %T1, label %F1

        T1:
        %a1 = add i8 %x, %y
        %a2 = mul i8 %a1, %y
        br label %E1

        F1:
        br label %E1

        E1:
        %ret = phi i8 [%a2, %T1], [%y, %F1]
        ret i8 %ret
}

; phi with two branches and invoke
declare void @ptest3_1()
define i8 @test_phi3(i1 %sel, i8 %x, i8 %y) 
{
        br i1 %sel, label %T1, label %F1

        T1:
        %a1 = add i8 %x, %y
        %a2 = mul i8 %a1, %y
        invoke void @ptest3_1()
        to label %E1
        unwind label %F1

        F1:
        br label %E1

        E1:
        %ret = phi i8 [%a2, %T1], [%y, %F1]
        ret i8 %ret
}
